package com.albert.algorithm;

public class BottleTest {
    public static void main(String[] args) {
        int money = 20; // 初始金额
        int price = 3; // 每瓶饮料的价格
        int bottleValue = 1; // 每个空瓶子的价值

        int totalBottles = 0; // 总共可以喝到的瓶数
        int remainingMoney = money; // 剩余的钱

        // 初始购买的瓶数
        int bottles = money / price;
        totalBottles += bottles; // 加上初始购买的瓶数
        remainingMoney %= price; // 剩余的钱

        // 初始空瓶子的数量
        int emptyBottles = bottles;

        // 循环直到没有足够的瓶子退或剩余的钱不足以再买一瓶
        while (emptyBottles >= bottleValue || remainingMoney >= price) {
            // 退瓶获得的钱
            remainingMoney += emptyBottles / bottleValue;
            // 更新空瓶子的数量
            emptyBottles %= bottleValue;
            // 再次购买的瓶数
            int newBottles = remainingMoney / price;
            totalBottles += newBottles; // 加上再次购买的瓶数
            remainingMoney -= newBottles * price; // 减去再次购买的费用
            emptyBottles += newBottles; // 新购买的瓶数加到空瓶子数量中
        }
        System.out.println("最多可以喝到 " + totalBottles + " 瓶饮料。");
    }
}
